﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SQLiteProvider.Enums
{
    /// <summary>
    /// Use SQLite Connection String Booleans as Flags
    /// </summary>
    [Flags]
    public enum SQLiteFlags
    {
        /// <summary>
        /// if only None selected, all boolean settings will be set to false.
        /// </summary>
        None = 0,
        /// <summary>
        /// if true Store GUID columns in binary form, else tore GUID columns as text
        /// </summary>
        BinaryGUID = 1 << 0,
        /// <summary>
        /// Determines whether the connection is automatically enlisted in the current distributed transaction. 
        /// The default value is true. SQLite engine itself doesn't support distributed transactions. 
        /// </summary>
        Enlist = 1 << 1,
        /// <summary>
        ///  True - Don't create the database if it does not exist, throw an error instead
        ///  False - Automatically create the database if it does not exist
        ///  Default value is True
        /// </summary>
        FailIfMissing = 1 << 2,
        /// <summary>
        ///  If enabled, use foreign key constraints
        /// </summary>
        ForeignKeys = 1 << 3,
        /// <summary>
        /// If enabled, uses the legacy 3.xx format for maximum compatibility, but results in larger database sizes.
        /// </summary>
        LegacyFormat = 1 << 4,
        /// <summary>
        /// If true, by default, the SQLiteConnection object is drawn from the 
        /// appropriate pool or is created and added to the appropriate pool.
        /// </summary>
        Pooling = 1 << 5,
        /// <summary>
        ///  When enabled, the database will be opened for read-only access and writing will be disabled.
        /// </summary>
        ReadOnly = 1 << 6,
        /// <summary>
        ///  If enabled, apply the default connection settings to opened databases.
        /// </summary>
        SetDefaults = 1 << 7,
        /// <summary>
        ///  If enabled, attempt to resolve the provided data source file name to a full path before opening.
        /// </summary>
        ToFullPath = 1 << 8,
        /// <summary>
        /// A Boolean value that determines whether or not the database use Charcode set UTF16 or not
        /// </summary>
        UseUTF16Encoding = 1 << 9
    }
}
